# Master Makefile for the GNU file utilities.
# Copyright (C) 1990, 1991, 1992 Free Software Foundation, Inc.

# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2, or (at your option)
# any later version.

# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU General Public License for more details.

# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.

SHELL = /bin/sh

#### Start of system configuration section. ####

srcdir = @srcdir@
VPATH = @srcdir@

# If you use gcc, you should either run the fixincludes script that
# comes with it or else use gcc with the -traditional option.  Otherwise
# ioctl calls will be compiled incorrectly on some systems.
CC = @CC@
AR = ar
# Set RANLIB = echo if your system doesn't have or need ranlib.
RANLIB = @RANLIB@

# Things you might add to DEFS:
# -DSTDC_HEADERS	If you have ANSI C headers and libraries.
# -DHAVE_UNISTD_H	If you have unistd.h.
# -DHAVE_LIMITS_H	If you have limits.h.
# -DUSG			If you have System V/ANSI C string and
#			memory functions and headers, ndir.h,
#			sys/sysmacros.h, no sys/times.h, fcntl.h,
#			getcwd.
# -DRETSIGTYPE=int	If your signal handlers return int, not void.
# -DDIRENT		If you have dirent.h.
# -DSYSNDIR		Old Xenix systems (selects sys/ndir.h).
# -DVOID_CLOSEDIR	If your closedir function returns void, not int.
# -DMAJOR_IN_MKDEV	If major, minor, makedev defined in sys/mkdev.h.
# -DMAJOR_IN_SYSMACROS	If major, minor, makedev defined in sys/sysmacros.h.
# -DINT_16_BITS		If sizeof long > sizeof int.
# -DHAVE_STRERROR	If you have strerror function.
# -DHAVE_VPRINTF	If you have vprintf function.
# -DHAVE_DOPRNT		If you have _doprnt function (but lack vprintf).
# -DHAVE_MKFIFO		If you have mkfifo system call.
# -DHAVE_FTRUNCATE	If you have ftruncate system call.
# -DHAVE_FCHMOD		If you have fchmod system call.
# -DMVDIR=\"$(libdir)/mvdir\"
#			If you lack rename system call.
# -DHAVE_ST_BLOCKS	If your `struct stat' has st_blocks and st_blksize.
# -DHAVE_UTIME_NULL	If your utime system call uses the
#			current time when passed a null time pointer.
# -DNEED_TZSET		If you lack ftime system call and
#			need to call tzset to set the timezone.
# -DAFS			If you use the Andrew File System and want
#			install to ignore AFS errors from trying to
#			change files' groups.
# Define zero or one of the following; you need one to compile df.
# The numbers after STATFS are the number of args it's passed.
# See lib/fsusage.c for more details.
# STAT_STATFS2_BSIZE	4.3BSD, SunOS 4, HP-UX, AIX.
# STAT_STATFS2_FSIZE	4.4BSD.
# STAT_STATFS2_FS_DATA	Ultrix.
# STAT_READ		SVR2.
# STAT_STATFS4		SVR3, Dynix, Irix.
# STAT_STATVFS		SVR4.
# Define zero or one of the following; you need one to compile df.
# The numbers after GETMNTENT are the number of args it's passed.
# See lib/mountlist.c for more details.
# MOUNTED_GETMNTENT1	4.3BSD, SunOS 4, HP-UX, Dynix, Irix.
# MOUNTED_GETMNTINFO	4.4BSD.
# MOUNTED_GETMNT	Ultrix.
# MOUNTED_FREAD		SVR2.
# MOUNTED_FREAD_FSTYP	SVR3.
# MOUNTED_GETMNTENT2	SVR4.
# MOUNTED_VMOUNT	AIX.

DEFS = @DEFS@
LIBS = @LIBS@
LIBPROGS = @LIBPROGS@

CFLAGS = -g
LDFLAGS = -g

prefix = /usr/local
exec_prefix = $(prefix)

# Prefix for each installed program, normally empty or `g'.
binprefix = 
# Prefix for each installed man page, normally empty or `g'.
manprefix = 

# Where to install the executables.
bindir = $(exec_prefix)/bin

# Where to put mvdir, if your system lacks the rename system call.
libdir = $(exec_prefix)/lib

# Where to put the manual pages.
mandir = $(prefix)/man/man1
# Extension (not including `.') for the installed manual page filenames.
manext = 1

#### End of system configuration section. ####

MDEFINES = bindir='$(bindir)' libdir='$(libdir)' mandir='$(mandir)' \
manext='$(manext)' binprefix='$(binprefix)' manprefix='$(manprefix)' \
LIBS='$(LIBS)' LIBPROGS='$(LIBPROGS)' AR='$(AR)' RANLIB='$(RANLIB)' \
DEFS='$(DEFS)' CFLAGS='$(CFLAGS)' LDFLAGS='$(LDFLAGS)' \
LIBS='$(LIBS)' CC='$(CC)'

DISTFILES = COPYING COPYING.LIB ChangeLog Makefile.in README INSTALL \
NEWS configure configure.in 

# Redundant stuff for making only selected programs.
PROGS = chgrp chown chmod cp dd du ginstall ln dir vdir ls mkdir \
mkfifo mknod mv rm rmdir touch @PROGS@

# Subdirectories to run make in for the primary targets.
SUBDIRS = lib src man

all:
	for dir in $(SUBDIRS); do echo making $@ in $$dir; cd $$dir; $(MAKE) $(MDEFINES) $@; cd ..; done
.PHONY: all

$(PROGS):
	cd lib; $(MAKE) $(MDEFINES) all
	cd src; $(MAKE) $(MDEFINES) $@

install:
	for dir in $(SUBDIRS); do echo making $@ in $$dir; cd $$dir; $(MAKE) $(MDEFINES) $@; cd ..; done
.PHONY: install

TAGS:
	for dir in $(SUBDIRS); do echo making $@ in $$dir; cd $$dir; $(MAKE) $(MDEFINES) $@; cd ..; done
.PHONY: TAGS

clean:
	for dir in $(SUBDIRS); do echo making $@ in $$dir; cd $$dir; $(MAKE) $(MDEFINES) $@; cd ..; done
.PHONY: clean

mostlyclean:
	for dir in $(SUBDIRS); do echo making $@ in $$dir; cd $$dir; $(MAKE) $(MDEFINES) $@; cd ..; done
.PHONY: mostlyclean

distclean:
	for dir in $(SUBDIRS); do echo making $@ in $$dir; cd $$dir; $(MAKE) $(MDEFINES) $@; cd ..; done
	rm -f Makefile config.status
.PHONY: distclean

realclean:
	for dir in $(SUBDIRS); do echo making $@ in $$dir; cd $$dir; $(MAKE) $(MDEFINES) $@; cd ..; done
	rm -f Makefile config.status
.PHONY: realclean

dist:
	echo fileutils-`sed -e '/version_string/!d' -e 's/[^0-9.]*\([0-9.]*\).*/\1/' -e q src/version.c` > .fname
	rm -rf `cat .fname`
	mkdir `cat .fname`
	ln $(DISTFILES) `cat .fname`
	for dir in $(SUBDIRS); do mkdir `cat .fname`/$$dir; cd $$dir; $(MAKE) $@; cd ..; done
	tar chZf `cat .fname`.tar.Z `cat .fname`
	rm -rf `cat .fname` .fname
.PHONY: dist

# Prevent GNU make v3 from overflowing arg limit on SysV.
.NOEXPORT:
